package tundra;
// -----( IS Java Code Template v1.2
// -----( CREATED: 2017-05-08 18:33:31 EST
// -----( ON-HOST: 192.168.66.129
import com.wm.data.*;
import com.wm.util.Values;
import com.wm.app.b2b.server.Service;
import com.wm.app.b2b.server.ServiceException;
// --- <<IS-START-IMPORTS>> ---
import java.nio.charset.Charset;
import java.io.IOException;
import javax.xml.namespace.NamespaceContext;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
import permafrost.tundra.data.IDataHelper;
import permafrost.tundra.io.InputStreamHelper;
import permafrost.tundra.lang.BooleanHelper;
import permafrost.tundra.lang.BytesHelper;
import permafrost.tundra.lang.CharsetHelper;
import permafrost.tundra.lang.ExceptionHelper;
import permafrost.tundra.lang.ObjectConvertMode;
import permafrost.tundra.lang.ObjectHelper;
import permafrost.tundra.xml.dom.DocumentHelper;
import permafrost.tundra.xml.dom.NodeHelper;
import permafrost.tundra.xml.namespace.IDataNamespaceContext;
import permafrost.tundra.xml.XMLCanonicalizationAlgorithm;
import permafrost.tundra.xml.XMLCanonicalizationHelper;
import permafrost.tundra.xml.XMLHelper;
import permafrost.tundra.xml.XMLMinificationHelper;
// --- <<IS-END-IMPORTS>> ---
public final class xml
{
// ---( internal utility methods )---
final static xml _instance = new xml();
static xml _newInstance() { return new xml(); }
static xml _cast(Object o) { return (xml)o; }
// ---( server methods )---
public static final void canonicalize (IData pipeline)
throws ServiceException
{
// --- <<IS-START(canonicalize)>> ---
// @subtype unknown
// @sigtype java 3.5
// [i] object:0:optional $content
// [i] field:0:optional $encoding
// [i] field:0:optional $algorithm {"Canonical XML Version 1.0","Canonical XML Version 1.0 With Comments","Canonical XML Version 1.1","Canonical XML Version 1.1 With Comments","Exclusive Canonical XML Version 1.0","Exclusive Canonical XML Version 1.0 With Comments"}
// [i] field:0:optional $mode {"stream","bytes","string"}
// [o] object:0:optional $content.canonical
IDataCursor cursor = pipeline.getCursor();
try {
Object content = IDataHelper.get(cursor, "$content");
Charset charset = IDataHelper.get(cursor, "$encoding", Charset.class);
XMLCanonicalizationAlgorithm algorithm = XMLCanonicalizationAlgorithm.normalize(IDataHelper.get(cursor, "$algorithm", String.class));
ObjectConvertMode mode = IDataHelper.get(cursor, "$mode", ObjectConvertMode.class);
if (content != null) IDataHelper.put(cursor, "$content.canonical", ObjectHelper.convert(XMLCanonicalizationHelper.canonicalize(BytesHelper.normalize(content, charset), charset, algorithm), charset, mode));
} catch(IOException ex) {
ExceptionHelper.raise(ex);
} finally {
cursor.destroy();
}
// --- <<IS-END>> ---
}
public static final void decode (IData pipeline)
throws ServiceException
{
// --- <<IS-START(decode)>> ---
// @subtype unknown
// @sigtype java 3.5
// [i] field:0:optional $string
// [o] field:0:optional $string
tundra.html.decode(pipeline);
// --- <<IS-END>> ---
}
public static final void emit (IData pipeline)
throws ServiceException
{
// --- <<IS-START(emit)>> ---
// @subtype unknown
// @sigtype java 3.5
// [i] object:0:optional $node
// [i] field:0:optional $encoding
// [i] field:0:optional $mode {"stream","bytes","string"}
// [o] object:0:optional $content
IDataCursor cursor = pipeline.getCursor();
try {
Node node = IDataHelper.get(cursor, "$node", Node.class);
Charset charset = IDataHelper.get(cursor, "$encoding", Charset.class);
ObjectConvertMode mode = IDataHelper.get(cursor, "$mode", ObjectConvertMode.class);
Object content = ObjectHelper.convert(NodeHelper.emit(node, charset), mode);
IDataHelper.put(cursor, "$content", content, false);
} catch(IOException ex) {
ExceptionHelper.raise(ex);
} finally {
cursor.destroy();
}
// --- <<IS-END>> ---
}
public static final void encode (IData pipeline)
throws ServiceException
{
// --- <<IS-START(encode)>> ---
// @subtype unknown
// @sigtype java 3.5
// [i] field:0:optional $string
// [o] field:0:optional $string
tundra.html.encode(pipeline);
// --- <<IS-END>> ---
}
public static final void minify (IData pipeline)
throws ServiceException
{
// --- <<IS-START(minify)>> ---
// @subtype unknown
// @sigtype java 3.5
// [i] object:0:optional $content
// [i] field:0:optional $encoding
// [i] field:0:optional $mode {"stream","bytes","string"}
// [o] object:0:optional $content.minified
IDataCursor cursor = pipeline.getCursor();
try {
Object content = IDataHelper.get(cursor, "$content");
Charset charset = IDataHelper.get(cursor, "$encoding", Charset.class);
ObjectConvertMode mode = IDataHelper.get(cursor, "$mode", ObjectConvertMode.class);
IDataHelper.put(cursor, "$content.minified", ObjectHelper.convert(XMLMinificationHelper.minify(InputStreamHelper.normalize(content, charset)), charset, mode), false);
} catch(IOException ex) {
ExceptionHelper.raise(ex);
} finally {
cursor.destroy();
}
// --- <<IS-END>> ---
}
public static final void parse (IData pipeline)
throws ServiceException
{
// --- <<IS-START(parse)>> ---
// @subtype unknown
// @sigtype java 3.5
// [i] object:0:optional $content
// [i] field:0:optional $encoding
// [i] record:0:optional $namespace
// [i] - field:0:optional default
// [o] record:0:optional $document
IDataCursor cursor = pipeline.getCursor();
try {
Object content = IDataHelper.get(cursor, "$content");
Charset charset = IDataHelper.get(cursor, "$encoding", Charset.class);
NamespaceContext namespace = IDataHelper.get(cursor, "$namespace", IDataNamespaceContext.class);
Node node = null;
if (content instanceof Node) {
node = (Node)content;
} else if (content instanceof InputSource) {
node = DocumentHelper.parse((InputSource)content, namespace);
} else if (content != null) {
node = DocumentHelper.parse(InputStreamHelper.normalize(content, charset), charset, true, namespace);
}
if (node != null) IDataHelper.put(cursor, "$document", NodeHelper.parse(node, namespace, true));
} finally {
cursor.destroy();
}
// --- <<IS-END>> ---
}
public static final void validate (IData pipeline)
throws ServiceException
{
// --- <<IS-START(validate)>> ---
// @subtype unknown
// @sigtype java 3.5
// [i] object:0:optional $content
// [i] field:0:optional $content.encoding
// [i] object:0:optional $schema
// [i] field:0:optional $schema.encoding
// [i] field:0:optional $raise? {"false","true"}
// [o] field:0:required $valid?
// [o] field:1:optional $errors
IDataCursor cursor = pipeline.getCursor();
try {
Object content = IDataHelper.get(cursor, "$content");
Charset contentCharset = IDataHelper.get(cursor, "$content.encoding", Charset.class);
Object schema = IDataHelper.get(cursor, "$schema");
Charset schemaCharset = IDataHelper.get(cursor, "$schema.encoding", Charset.class);
boolean raise = IDataHelper.getOrDefault(cursor, "$raise?", Boolean.class, false);
String[] errors = XMLHelper.validate(InputStreamHelper.normalize(content, contentCharset), contentCharset, InputStreamHelper.normalize(schema, schemaCharset), schemaCharset, raise);
boolean valid = content != null && (errors == null || errors.length == 0);
IDataHelper.put(cursor, "$valid?", valid, String.class);
IDataHelper.put(cursor, "$errors", errors, false, false);
} finally {
cursor.destroy();
}
// --- <<IS-END>> ---
}
}